1. Field of the Invention
The present invention relates generally to computer systems and more specifically to a system and method for providing hot swap capability in a computer peripheral device wherein the device and corresponding software drivers did not fully support hot swap functions.
2. Description of Related Art
Most modern desktop computers incorporate a local bus which is compliant with the Peripheral Component Interconnect (PCI) standard. The PCI bus is not truly a local bus (i.e., one which enables data transfer between the processor and memory/cache subsystems,) but is instead an intermediate bus which is coupled to the processor by a PCI bridge/controller. Data can be transferred to devices on the PCI bus through the bridge/controller, which typically buffers the data and allows the processor to perform other tasks while the data is transferred to the target device at the most efficient rate possible.
Compact PCI is a standard that is related to PCI. Compact PCI is a combination of several well-developed technologies, including PCI bus technology, Eurocard mechanical technology (e.g., as used in VMEbus systems), and pin and socket connector technology. The combination of these technologies results in a rugged, reliable package for PCI devices.
The Compact PCI standard also provides for several levels of hot swapping. xe2x80x9cHot swappingxe2x80x9d refers to installing or removing devices from a computer while the computer is operating. Hot swapping is useful because it allows components to be replaced or upgraded without necessitating any downtime in the system. This is particularly important in applications such as network servers, routers, voice mail servers, and other systems which must be online all of the time.
While the PCI standard supports Hot Plug operation, the hot swapping functionality of Compact PCI has several advantages. PCI Hot Plug operation relies on the motherboard of the system. The motherboard must include circuitry which allows the live insertion and extraction of PCI devices. Compact PCI, on the other hand, uses what may be referred to as a passive backplane philosophy, relying on the plug-in cards themselves, rather than the backplane, to implement the isolation circuitry necessary to provide hot swap capability.
Because hot swapping is useful in systems which must be continuously operational, many such systems are being upgraded or redesigned to incorporate this feature. This leads to some difficulties, however. While it is a simple matter to modify a system""s hardware to incorporate Compact PCI connectors, it is more difficult to modify the hardware to accommodate the signals related to Compact PCI""s hot swap capabilities. For instance, the application specific integrated circuits (ASICs) which are currently used in many devices are not designed to be hot-swap capable, so this functionality must somehow be provided. While these ASICs could be modified, this is a time-consuming and expensive proposition. Even if it were economically practical to modify the ASICs, existing device drivers could not be used with the modified ASICs, so additional time and expense would be required to rewrite the device drivers. It would therefore be desirable to provide an easy and inexpensive mechanism for enabling hot swapping while allowing existing devices and device drivers to be used.
One or more of the problems outlined above may be solved by various embodiments of the present invention. Broadly speaking, the invention comprises installing a bus bridge that has hot swap capability between the bus of a hot-swap-capable system and a non-hot-swap-capable device and thereby providing hot swap functionality for the device while allowing existing ASICs to be used in the devices and allowing existing device drivers to be used to drive the devices.
One embodiment comprises a computer system having a host processor and a hot-swap-capable device, each coupled to a Compact PCI bus. The device includes one or more application specific integrated circuits. The application specific integrated circuits use pre-existing designs to perform various functions of the device, but these designs do not provide hot swap capability. The device also includes a hot-swap-capable bus bridge which is coupled to the application specific integrated circuits and to a Compact PCI connector on the device. The bus bridge serves as an interface between the device and the Compact PCI bus. I/O (input/output) between the Compact PCI bus and the application specific integrated circuits is routed through the bus bridge. I/O between the host processor and the application specific integrated circuits is governed by one or more pre-existing drivers corresponding to the pre-existing designs of the respective application specific integrated circuits. When the device is inserted into the computer system or is removed from the system, the bus bridge provides hardware hot swap functionality for the device even though the application specific integrated circuits and drivers do not support hot swap functionality.
In one embodiment, an Intel 21554 bus bridge (xe2x80x9cthe 21554xe2x80x9d) is used to provide the hot swap functionality of the device. (Other bus bridges, including the Intel 21555, can be used in other embodiments in the same manner as the 21554xe2x80x94references to the 21554 in the following description are therefore intended to be construed to cover these other bus bridges.) The 21554 is configured to support Compact PCI Basic Hotswap, Full Hotswap and High Availability functions, but in its normal configuration is non-transparent. The 21554 is reprogrammed with unique identifying information which is provided to open boot PROM (OBP) firmware and operating system (OS) software when the Compact PCI bus to which it is connected is probed. This identifying information identifies the 21554 as being used in a configuration in which it is intended to emulate a transparent bridge. The OBP firmware and OS software include drivers which are configured to recognize the new identifying information that is returned by the xe2x80x9ctransparentlyxe2x80x9d configured 21554 and to treat the 21554 as a transparent bridge rather than a single non-transparent device (e.g., the application specific integrated circuits on the 21554""s secondary side are probed and are mapped into the same address space as the primary side.)
One embodiment comprises a method for modifying a non-hot-swap-capable device in a computer system to provide hot swap capability. The device includes one or more application specific integrated circuits. The host processor has one or more drivers corresponding to the application specific integrated circuits and configured to drive them. The method comprises installing a bus bridge in the device, wherein the bus bridge is configured to be hot-swap-capable. The bus bridge is coupled to the Compact PCI connector and serves as an interface between the Compact PCI bus to which the device is connected and the application specific integrated circuits of the device. In one embodiment, the bus bridge is non-transparent in a normal configuration. In this embodiment, the method further comprises configuring the bus bridge to emulate a transparent bridge and modifying or configuring drivers on the host processor to recognize and operate the bus bridge in its transparent configuration. The drivers may be employed by OBP firmware and/or OS software.